package com.sikulifang.bank.simulation.dto.icbc;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * ClassName DetailDTO
 * Description 明细的返回
 *
 * @author Yat
 * Date 2023年6月27日, 0027 16:27
 * version 1.0
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class DetailDTO extends AbstractIcbcDTO implements Serializable {

    /**
     * responseBizContent
     */
    private ResponseBizContentDTO response_biz_content;

    /**
     * ResponseBizContentDTO
     */
    @NoArgsConstructor
    @Data
    public static class ResponseBizContentDTO {
        /**
         * returnCode 返回码，交易成功返回0，正表示业务报错，负表示系统报错，负值时须考虑疑帐
         */
        private Integer return_code;
        /**
         * returnMsg 返回码说明
         */
        private String return_msg;
        /**
         * msgId 消息号
         */
        private String msg_id;
        /**
         * transCode 交易代码
         */
        private String trans_code;
        /**
         * bankCode 归属银行编号：客户注册时的归属单位
         */
        private String bank_code;
        /**
         * loginId 证书ID：无证书客户可上送空
         */
        private String login_id;
        /**
         * tranDate 交易日期：ERP系统产生的交易日期，格式是yyyyMMdd
         */
        private Integer tran_date;
        /**
         * tranTime 交易时间：ERP系统产生的交易时间，格式如HHmmssSSS，精确到毫秒；
         */
        private Integer tran_time;
        /**
         * fSeqNo 指令包序列号：ERP系统产生的指令包序列号，一个集团永远不能重复。客户可选择上送或由系统自动生成
         */
        private String f_seq_no;
        /**
         * accountNo 账号：对于本行FT类账户，支持账号前加FT类标志的输出；
         */
        private String account_no;
        /**
         * accountName 户名
         */
        private String account_name;
        /**
         * currency
         */
        private String currency = "CNY";
        /**
         * beginDate 起始日期
         */
        private String begin_date;
        /**
         * endDate 截止日期
         */
        private String end_date;
        /**
         * minAmount 发生额下限
         */
        private BigDecimal min_amount;
        /**
         * maxAmount
         */
        private BigDecimal max_amount;
        /**
         * bankType 行别
         */
        private String bank_type;
        /**
         * nextTag 查询下页标识：查询下页标识：若该字段有值，表示还有下一页，在请求参数的next_tag中赋上该值
         */
        private String next_tag;
        /**
         * totalNum  交易条数
         */
        private Integer total_num;
        /**
         * dueBillNo 借据编号
         */
        private String due_bill_no;
        /**
         * rd
         */
        private List<RdDTO> rd;

        /**
         * RdDTO
         */
        @NoArgsConstructor
        @Data
        public static class RdDTO {
            /**
             * drcrf 借贷标志：数据字典：1-借；2-贷；
             */
            private String drcrf;
            /**
             * vouhNo 凭证号
             */
            private String vouh_no;
            /**
             * debitAmount 借方发生额
             */
            private BigDecimal debit_amount;
            /**
             * creditAmount 贷方发生额
             */
            private BigDecimal credit_amount;
            /**
             * balance 余额
             */
            private BigDecimal balance;
            /**
             * recipBkNo 对方行号
             */
            private String recip_bk_no;
            /**
             * recipBkName 对方行名
             */
            private String recip_bk_name;
            /**
             * recipAccountNo 对方账号
             */
            private String recip_account_no;
            /**
             * recipName 对方户名
             */
            private String recip_name;
            /**
             * summary 摘要
             */
            private String summary;
            /**
             * useCn 用途
             */
            private String use_cn;
            /**
             * postScript 附言
             */
            private String post_script;
            /**
             * busi_code 业务代码
             */
            private String busi_code;
            /**
             * date 交易日期
             */
            private String date;
            /**
             * time 时间戳
             */
            private String time;
            /**
             * ref 业务编号
             */
            private String ref;
            /**
             * oref 相关业务编号
             */
            private String oref;
            /**
             * enSummary 英文备注
             */
            private String en_summary;
            /**
             * busiType 业务种类
             */
            private String busi_type;
            /**
             * vouhType 凭证种类
             */
            private String vouh_type;
            /**
             * addInfo 附加信息
             */
            private String add_info;
            /**
             * toutfo 电子回单唯一标识
             */
            private String toutfo;
            /**
             * onlySequence
             */
            private String only_sequence;
            /**
             * agentAccountName
             */
            private String agent_account_name;
            /**
             * agentAccountNo
             */
            private String agent_account_no;
            /**
             * upDtranf
             */
            private String up_dtranf;
            /**
             * valueDate
             */
            private String value_date;
            /**
             * trx_code
             */
            private String trx_code;
            /**
             * ref1
             */
            private String ref1;
            /**
             * oref1
             */
            private String oref1;
            /**
             * cashf
             */
            private String cashf;
            /**
             * busiDate
             */
            private String busi_date;
            /**
             * busiTime
             */
            private String busi_time;
            /**
             * mgNo
             */
            private String mgNo;
            /**
             * mgAccountNo
             */
            private String mg_account_no;
            /**
             * mgCurrency
             */
            private String mg_currency;
            /**
             * cashExf
             */
            private String cash_exf;
            /**
             * detailNo
             */
            private String detail_no;
            /**
             * remark
             */
            private String remark;
            /**
             * tradeTime
             */
            private String trade_time;
            /**
             * tradeFee
             */
            private String trade_fee;
            /**
             * tradeLocation
             */
            private String trade_location;
            /**
             * exRate
             */
            private String ex_rate;
            /**
             * forCurrency
             */
            private String for_currency;
            /**
             * enAbstract
             */
            private String en_abstract;
            /**
             * openBankNo
             */
            private String open_bank_no;
            /**
             * openBankbic
             */
            private String open_bankbic;
            /**
             * openBankName
             */
            private String open_bank_name;
            /**
             * subAcctSeq
             */
            private String sub_acct_seq;
            /**
             * thCurrency
             */
            private String th_currency;
            /**
             * recipBkName1
             */
            private String recip_bk_name1;
            /**
             * recipBkNo1
             */
            private String recip_bk_no1;
            /**
             * tInfoNew
             */
            private String t_info_new;
            /**
             * refundMsg
             */
            private String refund_msg;
            /**
             * busTypeNo
             */
            private String bus_type_no;
            /**
             * receiptInfo
             */
            private String receipt_info;
            /**
             * telNo
             */
            private String tel_no;
            /**
             * mdcardno
             */
            private String mdcardno;
            /**
             * tranSerialNo 电子回单流水号
             */
            private String tran_serial_no;
            /**
             * mediaId
             */
            private String media_id;
        }
    }
}
